// 链表由节点组成
function ListNode(val,next){
    this.val=(val===undefined?0:val);
    this.next=(next===undefined?null:next);
}

const a1=new ListNode(1);
const a2=new ListNode(2);
const a3=new ListNode(3);
const a4=new ListNode(4);
const a5=new ListNode(5);
a1.next=a2;
a2.next=a3;
a3.next=a4;
a4.next=a5;
a5.next=null;
// console.log(a5.next);

function reverseList(head){
    // 如果空链表 或者只有一个头结点
    if(!head||!head.next) return head;

    // 反转 头变尾 前驱节点变后继节点
    // 链表 线性结构的

    let cur=head;//当前节点
    let pre=null;
    while(cur){// es6  const let 块级作用域
        const next=cur.next;//当前节点的下一个节点 后继节点
        cur.next=pre;
        pre=cur;//前驱节点 为成为下一轮的后继节点 存好值
        cur=next;//遍历

    }
    return pre;
}
console.log(reverseList(a1));